use std::collections::HashMap;

type Table = HashMap<String, Vec<String>>;

fn main() {
    let mut table = Table::new();
    table.insert("zhangsan".to_string(), vec!["Book01".to_string(), "Book02".to_string(), "Book03".to_string()]);
    table.insert("lisi".to_string(), vec!["Book11".to_string(), "Book12".to_string(), "Book13".to_string()]);
    table.insert("wangwu".to_string(), vec!["Book21".to_string(), "Book22".to_string(), "Book23".to_string()]);
    // 这是使用引用，因为只是读取，使用共享引用（不需要使用可变引用）
    // 如果不使用引用，会把所有权转移给函数，导致后面无法使用
    show(&table);
    show(&table);

    let str1 = "str1".to_string();
    let str2 = "str2".to_string() + &str1;
    let str3 = "str3".to_string() + &str2 + &str1;
    println!("{}", str3);
}

fn show(t: &Table) {
    for(author,books) in t {
        println!("{}:\t{}", author,books.join(","));
        //
        // for book in books {
        //     println!("\t{}", book);
        // }
    }
}
